﻿using System.Collections.Generic;
using System.Linq;
using Controller2.Models;

namespace Controller2.BLL
{
    public class VeiculoBll
    {
        public static Veiculo GetVeiculo(ControllerBDModelContainer db, int id)
        {
            var veic = db.Veiculo.FirstOrDefault(v => v.IdVeiculo == id);
            return veic;
        }

        public static IEnumerable<Veiculo> GetAllVeiculos(ControllerBDModelContainer db)
        {
            var veic = (from v in db.Veiculo
                        orderby v.Nome
                        select v
                      )
                      .ToList();
            return veic;
        }

        /// <summary>
        /// Faz o autocomplete do campo de texto de pesquisa
        /// </summary>
        /// <param name="db">Contexto de dados</param>
        /// <param name="filtro">Valor do filtro (combobox)</param>
        /// <param name="termoPesquisa">Termo da pesquisa (valor digitado)</param>
        /// <param name="numeroLinhas">Número de registros a serem mostrados</param>
        /// <returns></returns>
        public static IEnumerable<string> AutoComplete(ControllerBDModelContainer db, int filtro, string termoPesquisa, int numeroLinhas)
        {
            IEnumerable<string> resultado;
            int codigo = 0;
            if (filtro == 1)
            {
                if (!int.TryParse(termoPesquisa, out codigo))
                {
                    filtro = 2;
                }
            }
            switch (filtro)
            {
                default:
                    resultado = (from v in db.Veiculo.ToList()
                                 where v.IdVeiculo >= codigo
                                 select v.IdVeiculo.ToString()).Distinct();
                    break;
                case 2:
                    resultado = (from v in db.Veiculo
                                 where v.Nome.Contains(termoPesquisa)
                                 select v.Nome).Distinct();
                    break;
                case 3:
                    resultado = (from v in db.Veiculo
                                 where v.Categoria.Contains(termoPesquisa)
                                 select v.Categoria).Distinct();
                    break;
            }
            return resultado.Take(numeroLinhas);
        }

        public static Dictionary<string, string> Categorias()
        {
            var cats = new Dictionary<string, string>();
            cats.Add("Internet", "Internet");
            cats.Add("Televisão", "Televisão");
            cats.Add("Rádio", "Rádio");
            cats.Add("Outdoor", "Outdoor");
            cats.Add("Outbus", "Outbus");
            cats.Add("Panfletos", "Panfletos");
            cats.Add("Telefone", "Telefone");

            return cats;
        }
    }
}